package com.LambdaDemo.Test03;

/*
* 练习3
	定义一个接口（Addable），里面定义一个抽象方法：int add(int x,int y)
	定义一个测试类（AddableDemo），在测试类中提供两个方法
一个方法：useAddable（Addable a）
一个方法时主方法，在主方法中调用useAddable方法
* */

public class AddableDemo {
    public static void main(String[] args) {
        //在主方法中调用useFlyable方法
//        AddableImpl a = new AddableImpl();
//        useAddable(a);

        //匿名内部类
//        useAddable(new Addable() {
//            @Override
//            public int add(int x, int y) {
//                return x+y;
//            }
//        });

        //Lambda表达式方式
//        useAddable((int x, int y) -> {
//            return x * y;
//        });
        //省略模式
//        useAddable((x, y) -> {
//            return x * y;
//        });
        //如果代码块只有一条语句，可以省略大括号和分号，如果有return，return也可以省略
        useAddable((x, y) -> x * y);

    }

    public static void useAddable(Addable a) {
        System.out.println(a.add(3, 4));
    }
}
